package com.run.user;
import com.run.mapper.EbOrderMapper;
import com.run.mapper.EbUserMapper;
import com.run.model.EbUser;
import com.run.model.EbUserExample;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.Date;
import java.util.List;

/**
 * @Description: 用一句话描述
 * @Auther: 新梦想*陈超
 * @Date: 2020-10-16 09:26
 */
@RunWith(SpringJUnit4ClassRunner.class)  //alt+enter
@ContextConfiguration("classpath:xml/spring-dao.xml")
public class test {
    @Autowired
    private EbUserMapper ebUserMapper;

    @Autowired
    private EbOrderMapper ebOrderMapper;

    //测试用例
    //1.添加的测试用例  B2B  B2C --京东   B2B2C  O2O 新零售
    @Test
    public void whenInsertSuccess(){
        EbUser user = new EbUser();
        //给属性赋值
        user.setEuUserId("james");
        user.setEuUserName("勒布朗.詹姆斯");
        user.setEuPassword("123456");
        user.setEuAddress("USA 芝加哥");
        user.setEuSex("T");//T：男  F:女
        //Date日期类   new Date()获取当前系统时间
        // 1999-9-9 new Date(1999-1900,9-1,9)
        user.setEuBirthday(new Date());
        user.setEuStatus(1);

        //添加数据的方法---1.一定要给所有字段添加值
        //result 返回的是受影响的行数  >0 成功  0 失败
        // // insert into eb_user (EU_USER_ID, EU_USER_NAME, EU_PASSWORD, EU_SEX, EU_BIRTHDAY, EU_IDENTITY_CODE, EU_EMAIL, EU_MOBILE, EU_ADDRESS, EU_STATUS) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        //int result = ebUserMapper.insert(user); //alt+enter
        //添加数据的方法---2.一定要给部分字段添加值 【推荐】
        //insert into eb_user ( EU_USER_ID, EU_USER_NAME, EU_PASSWORD, EU_SEX, EU_BIRTHDAY, EU_ADDRESS, EU_STATUS ) values ( ?, ?, ?, ?, ?, ?, ? )
        int result = ebUserMapper.insertSelective(user);

        //断言 1:期望的result值   result：实际的result值
        Assert.assertEquals(1,result);//如果result等于1 断言通过 否则失败
    }

    //2.更新的测试用例
    @Test
    public void whenUpdateSuccess(){
        EbUser user = new EbUser();
        //给属性赋值
        //必须设置主键值---找到唯一的数据
        user.setEuUserId("james");

        //需要改名字和性别
        user.setEuUserName("勒布朗.詹姆斯2");
        user.setEuSex("F");//T：男  F:女

        //修改数据的方法---1.一定要修改所有字段
        //result 返回的是受影响的行数  >0 成功  0 失败
        // // insert into eb_user (EU_USER_ID, EU_USER_NAME, EU_PASSWORD, EU_SEX, EU_BIRTHDAY, EU_IDENTITY_CODE, EU_EMAIL, EU_MOBILE, EU_ADDRESS, EU_STATUS) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        //int result = ebUserMapper.updateByPrimaryKey(user);
        //添加数据的方法---1.一定修改部分字段 【推荐】
        //insert into eb_user ( EU_USER_ID, EU_USER_NAME, EU_PASSWORD, EU_SEX, EU_BIRTHDAY, EU_ADDRESS, EU_STATUS ) values ( ?, ?, ?, ?, ?, ?, ? )
        int result = ebUserMapper.updateByPrimaryKeySelective(user);

        //断言 1:期望的result值   result：实际的result值
        Assert.assertEquals(1,result);//如果result等于1 断言通过 否则失败
    }

    //上午接下来的任务：预习删除deleteByPrimaryKey 、deleteByExample、查询selectByPrimaryKey 、selectByExample

    //3.删除操作
    @Test
    public void whenDeleteSuccess(){
        //int result = ebOrderMapper.deleteByPrimaryKey("jordan");
        EbUserExample example = new EbUserExample();
        EbUserExample.Criteria criteria = example.createCriteria();

        //根据条件类Criteria类的对象criteria构建SQL条件
        criteria.andEuUserNameEqualTo("勒布朗.詹姆斯").andEuPasswordEqualTo("123456");
        int result = ebUserMapper.deleteByExample(example);
        Assert.assertEquals(1,result);
    }

    //4.普通查询
    @Test
    public void whenSelectSuccess(){
        //查询数据1.根据主键查询
       // EbUser user = ebUserMapper.selectByPrimaryKey("admin");
        //System.out.println(user);
        //查询数据2.根据多个条件查
        //EbUserExample example = new EbUserExample();
        //EbUserExample.Criteria criteria = example.createCriteria();

        //构建查询条件
        //criteria.andEuUserNameEqualTo("ss").andEuPasswordEqualTo("ss");
        //List 集合（EbUser）===>(蛇皮袋装--西瓜，冬瓜。。。)
       // List<EbUser> ebUsers = ebUserMapper.selectByExample(example);
        //System.out.println("ebUsers");
        //5.分页查询
        

    }

}














